System for determining a route and presenting navigational instructions therefor

ABSTRACT

A system for determining a route and presenting navigational instructions therefor preferably includes a plurality of map records including a plurality of business records each identifying a business, a plurality of street records each identifying a street, and a plurality of node records each identifying a node.  
     The system preferably further includes a computation module adapted to execute an algorithm for determining a route between a source location and a destination location using at least one of the map records. The algorithm is preferably adapted to manipulate a graph representation having vertices and edges, wherein each of the vertices corresponds to a respective one of the streets, each of the streets corresponds to exactly one of the vertices, each node corresponds to at least one of the edges, and each edge corresponds to exactly one node. The algorithm can be biased to discover the simplest path (minimum number of street changes) that traverses the minimum physical distance.  
     The computation module preferably interacts with a user during the determination of the route to present a status of the determination to the user and/or to respond to a request of the user, such as a request to terminate the determination.  
     The system preferably further includes a presentation module that generates and presents natural language navigational instructions for traversing the route.

FIELD OF THE INVENTION

[0001] This invention relates generally to systems for providingdirections to travelers and more specifically to systems for determininga route and presenting navigational instructions therefor.

BACKGROUND OF THE INVENTION

[0002] Recent years have seen a rapid proliferation of devices thatprovide mobile access to electronic information, such as handheldcomputers, pagers and data-enabled cellular telephones. One compellingproperty of such handheld devices is their capacity to organizeinformation dynamically according to the relative physical locations ofthe user, points of interest to the user, and available navigablepathways of various kinds. However, these devices do not determine aroute between specified physical locations and do not presentnavigational instructions for traversing the route.

[0003] Related patents include the following. U.S. Pat. No. 6,047,236“GEOGRAPHIC LOCATION REFERENCING SYSTEM AND METHOD” discloses anaddressing scheme that allows physical locations to be globally uniquelyaddressed and specified, including via automatic position acquisitionusing a global positioning system. However, it does not include thegeneration and presentation of navigational directions.

[0004] U.S. Pat. No. 6,038,509 “SYSTEM FOR RECALCULATING A PATH”discloses the use of caching to accelerate recalculation of directionswhen deviation from an originally prescribed path occurs. U.S. Pat. No.6,016,485 “SYSTEM FOR PATHFINDING” discloses the use of pre-computedsub-paths to accelerate the computation of minimal-cost routes in anetwork.

[0005] U.S. Pat. No. 6,026,384 “COST ZONES” discloses a technique fordetermining and displaying which destinations on a digital map havedistances from a given location that are within a fixed cost accordingto a chosen cost function. However, it does not disclose the generationor presentation of navigational directions, either to destinationswithin the cost zone or otherwise.

[0006] U.S. Pat. No. 6,009,403 “TRAVEL PLAN PREPARING DEVICE” disclosesa system for describing a kind of service and receiving informationabout areas near a travel route in which such service locations exist. Aparticular area can be specified, and the kinds of services available inthat area are subsequently described. However, it does not disclose thegeneration or presentation of navigational directions that satisfyparticular criteria.

[0007] U.S. Pat. No. 5,978,730 “CACHING FOR PATHFINDING COMPUTATION”discloses the background execution of a path-finding algorithm withoutinstigation by a user, such that a pre-loaded cache of data and routesrelevant to a routing request are available whenever the request ismade. It further discloses a particular method, using Dijkstra'salgorithm, for determining directions in a graph representing a map. Thegraph representation disclosed includes vertices that correspond toindividual traversable segments conjoining pathway intersections, suchthat the vertices of the graph representation do not correspond toentire contiguous traversable pathways that potentially span multipleintersections, and such that every such intersection is not representedas an edge incident to the pathway's vertex.

[0008] U.S. Pat. No. 5,944,769 “INTERACTIVE NETWORK DIRECTORY SERVICEWITH INTEGRATED MAPS AND DIRECTIONS” discloses a network-based system tocommunicate directory information with corresponding locale data, anddiscloses direction-finding functionality.

[0009] U.S. Pat. No. 4,954,958 “DIRECTIONAL INFORMATION SYSTEM”discloses related functionality.

[0010] Related commercial products include services from Kivera, acompany that licenses location-based services to network accessproviders for mobile devices. One service is direction-finding.

SUMMARY OF THE INVENTION

[0011] The invention provides a system for determining a route andpresenting navigational instructions therefor. The invention in oneaspect enables a user to obtain instructions for travelling from any oneselected location on a particular geophysical grid to any other locationvia real-world means of transit. Although the invention does notrestrict utilization to a particular medium of computation, anembodiment includes a computation module as part of a client applicationresident on a handheld device having at least one locally cacheddatabase of geospatial information. The user may specify a sourcelocation (e.g., his or her current location) to the device. Additionallyor alternately, the source location may be acquired automatically viaglobal positioning technology. The computation module may alternativelybe part of a remote server that receives a request from a handhelddevice that is wirelessly networked to the server.

[0012] Once the computation module receives the source locationinformation and destination location information, the computation moduledynamically determines a route between the source location and thedestination location. The determination of the route preferably balancesdescriptive simplicity of the route with a minimal total distancetraversed along the route. Prior art systems optimize for distance, timeor simplicity individually but not in combination.

[0013] Once the route has been determined, a presentation module of thecomputation module provides a natural language description of theactions the user must take to follow the route. The available pathwaysmay include one- and two-way streets, subway systems, bus routes,overland railways and/or any other form of transit. The instructions maybe tailored to users who are on foot or in vehicles, and they may beenhanced with information directed to known characteristics of the user.For example, the presentation module may instruct the user to pass by orturn at specific apparent landmarks that are likely to be of interest tohim or her.

[0014] In an embodiment, the system includes a plurality of map recordsincluding a plurality of business records each identifying a business, aplurality of street records each identifying a street, and a pluralityof node records each identifying a node. As used herein, a “node” isdefined as any uniquely specified location where traversable pathwayscoincide, a “business” is defined as any physical location representedin the system that a user might want to obtain information about, and a“street” is defined as any contiguously traversable pathway via which aperson can move among a set of nodes on which the pathway is incident.The business records, street records, and node records are preferablymaintained in a business database, a street database, and a nodedatabase, respectively.

[0015] The system preferably further includes a computation module thatcan access the map records and execute an algorithm for determining aroute between a source location and a destination location using atleast one of the map records. The computation module can receive sourcelocation information and use it to identify the source location, and canreceive destination location information and use it to identify thedestination location. The computation module determines a set of sourcestreets associated with the source location and a set of destinationstreets associated with the destination location. The route between thesource location and the destination location, as determined by thecomputation module, includes a desired solution path between a sourcestreet in the set of source streets and a destination street in the setof destination streets, as determined by the algorithm. The algorithmcan be biased to discover, when multiple simplest paths exist, thatsimplest path which traverses the minimum physical distance. Therefore,when at least two of a plurality of possible routes between the sourcelocation and the destination location are the simplest routes (i.e.,both require an identical minimum number of street changes), thealgorithm preferably is biased toward determining the physicallyshortest route (i.e., the route traversing the minimum physicaldistance) of the at least two possible routes.

[0016] The system preferably further includes a presentation moduleadapted to generate and present navigational instructions for traversingthe route. In one aspect, the presentation module interprets the route,as determined by the computation module, into natural languagenavigational instructions that may be tailored using at least one ofdemographic information pertaining to the user, a preference of theuser, a characteristic of the user, a characteristic of a handhelddevice being used by the user, information stored in the handhelddevice, and a characteristic of one of the businesses, one of thestreets, and/or one of the nodes.

[0017] The computation module can preferably be adapted to interact withthe user while executing the algorithm. For example, the computationmodule may provide status updates to the user to indicate that the routedetermination is proceeding correctly, and may temporarily suspend thealgorithm to execute an interface routine that checks for user requests(e.g., to cancel the determination of the route).

BRIEF DESCRIPTION OF THE DRAWINGS

[0018]FIG. 1 illustrates an exemplary structure of a system of theinvention.

[0019]FIG. 2 shows an exemplary street map for use in explaining theinvention.

[0020]FIG. 3 illustrates an exemplary graph representation of the map ofFIG. 2 that can be used by an exemplary algorithm of the invention.

[0021]FIG. 4 shows the map of FIG. 2 illustrating a desired route.

[0022]FIG. 5 illustrates the graph representation of FIG. 3 indicating adesired solution path found by the algorithm.

DETAILED DESCRIPTION OF THE INVENTION

[0023] The invention provides systems for determining a route andpresenting navigational instructions therefor. In an embodiment, thesystem includes a plurality of map records identifying a plurality ofmapped objects. In one aspect, the map records include a plurality ofbusiness records, a plurality of street records, and a plurality of noderecords. In this aspect, for example, each of the business recordsidentifies a business, each of the street records identifies a street,and each of the node records identifies a node.

[0024] As used herein, a “node” is defined as any uniquely specifiedlocation where traversable pathways coincide. For example, the locationcan be parameterized by an <x, y> coordinate pair relative to a fixedframe of reference. Latitude and longitude form an exemplary suitablecoordinate system. As used herein, a “business” is defined as anyphysical location represented in the system that a user might want toobtain information about. It need not be a site at which commercialactivity takes place. For example, a business can be any destinationhaving a street address (e.g., as assigned by a government postalservice) and/or an associated coordinate pair in a coordinate system. Asused herein, a “street” is defined as any contiguously traversablepathway via which a person can move among a set of nodes on which thepathway is incident. For example, this can be a street as commonlydefined (e.g., a physical road), but when a physical road consists ofdiscontiguous segments, each of the segments would constitute a separatestreet by the terminology used herein. For another example, when aphysical road forks, such that both branch roads bear the name of thetrunk road, the trunk road and one of the branch roads would togetherconstitute a street by the terminology used herein, while the otherbranch road would constitute a separate street by the terminology usedherein. For another example, a bus route, a subway line, a railroadline, or some other method of transit could constitute a street by theterminology as used herein. A street can be one- or two-way.

[0025]FIG. 1 illustrates an exemplary structure of the invention. Thebusiness records are preferably maintained in at least one businessdatabase 10. The street records are preferably maintained in at leastone street database 12. The node records are preferably maintained in atleast one node database 14.

[0026] Each of the business records can include at least one of abusiness unique identifier, a business street identifier and a businesscoordinate pair. The business unique identifier is an identifier for thebusiness that can be used to identify it from among the other businessesidentified in the business database. No business identified in thebusiness database has a unique identifier identical to the uniqueidentifier of another business identified in the business database. Thebusiness street identifier is an identifier for the street on which thebusiness resides. If an identified business resides on multiple streets,a street from among those streets can be chosen heuristically. Thebusiness coordinate pair is a coordinate pair that identifies thelocation of the business relative to a fixed frame of reference. Forexample, the business coordinate pair can be an <x, y> coordinate pair.Each business record can also include additional information that isextraneous to the direction-finding computation discussed below.

[0027] Each of the street records can include at least one of a streetunique identifier, a street name identifier, at least one incident nodeidentifier, and a one-wayness indicator. The street unique identifier isan identifier for the street that can be used to identify it from amongthe other streets identified in the street database. No streetidentified in the street database has a unique identifier identical tothe unique identifier of another street identified in the streetdatabase. The street name identifier is an identifier for a name(preferably the most commonly used name) of the street. Each incidentnode identifier is an identifier for a respective node to which thestreet is incident. The number of incident node identifiers in thestreet record equals the number of nodes to which the street isincident. The incident node identifiers are preferably arranged in thestreet record according to their positions in a connection order alongthe street. These positions will be discussed in detail below. Theone-wayness indicator is an indicator as to whether the street is aone-way street or a two-way street. Each street record can also includeadditional information that is extraneous to the direction-findingcomputation discussed below.

[0028] Each of the node records can include a node unique identifier, atleast one intersecting street identifier, a node coordinate pair, and atleast one transition constraint governing traversal of the node. Thenode unique identifier is an identifier for the node that can be used toidentify it from among the other nodes identified in the node database.No node identified in the node database has a unique identifieridentical to the unique identifier of another node identified in thenode database. Each intersecting street identifier is an identifier fora respective street that intersects the node. The number of intersectingstreet identifiers in the node record equals the number of streetsintersecting the node. The term “intersect” as used herein should bebroadly interpreted to include not only an intersection of streets as itis commonly defined, but also, for example, the presence of a subwaystation entrance on a physical street. The node coordinate pair is acoordinate pair that identifies the location of the node relative to afixed frame of reference that is the same fixed frame of reference usedwith the business coordinate pairs. For example, the node coordinatepair can be an <x, y> coordinate pair. The transition constraintidentifies constraints on traversing from one street to another at thenode. Each node record can also include additional information that isextraneous to the direction-finding computation discussed below.

[0029]FIG. 2 shows an exemplary street map for use in explaining theinvention. The connection order positions of the nodes identified by theincident node identifiers with respect to the street to which the nodesare incident is determined by beginning at one end of the street andupon encountering each node, assigning a connection order position(e.g., beginning at “first”, then continuing with “second”, “third”,etc. as needed; or, e.g., beginning at “1”, then continuing with “2”,“3”, etc. as needed) to the encountered node, until all nodes on thestreet have been encountered and have been assigned a connection orderposition. For example, Avenue A has four incident nodes: theintersection 16 with 4th Street W, the intersection 18 with 3rd Street,the intersection 20 with 2nd Street, the intersection 21 with DiagonalStreet, and the intersection 22 with 1st Street. If the connection orderis determined beginning at the north end of Avenue A, the connectionorder positions of intersection 16, intersection 18, intersection 20,intersection 21, and intersection 22 are first, second, third, fourth,and fifth, respectively. If the connection order is determined beginningat the south end of Avenue A, the connection order positions ofintersection 22, intersection 21, intersection 20, intersection 18, andintersection 16 are first, second, third, fourth, and fifth,respectively.

[0030] In the embodiment, the system further includes a computationmodule 24 that can access the map records. For example, the computationmodule 24 can access the business records in the business database 10,the street records in the street database 12, and the node records inthe node database 14. The computation module 24 further executes analgorithm for determining a route between a source location and adestination location using at least one of the map records. For example,the computation module 24 uses at least one of the business records, atleast one of the street records and/or at least one of the node records.

[0031] The computation module 24 is adapted to receive source locationinformation 26 and use the source location information to identify thesource location. The source location is associated with at least one ofa business identified by at least one of the business records, a streetidentified by at least one of the street records, and a node identifiedby at least one of the node records. The computation module 24 isfurther adapted to receive destination location information 28 and usethe destination location information to identify the destinationlocation. The destination location information is associated with atleast one of a business identified by at least one of the businessrecords, a street identified by at least one of the street records, anda node identified by at least one of the node records.

[0032] The source location information 26 can be information identifyingthe user's current physical location as the source location. The sourcelocation information can be made available to the computation moduleeither manually (e.g., input by the user by any means known in the art)or automatically (e.g., determined using at least one component of aposition-finding system, such as a global positioning system, includingby wireless data transfer). For example, if the user's current locationis an intersection of two streets, the user may provide the names of thetwo streets to the computation module as the source locationinformation, and the computation module can use the street records andthe node records to determine the source location as the coordinate pairof the node that represents the intersection of the two streets.

[0033] The destination location information 28 can be informationidentifying the user's desired physical location (e.g., where he/shewants to go). The destination location information can be made availableto the module manually (e.g., input by the user by any means known inthe art). When the user is unfamiliar with available destinations in anarea, the destination location information may include at least onesearch parameter that is used by at least one of the computation moduleand another computation module to choose a destination location. Forexample, if the user desires to go to the train station, the user mayprovide the name of the train station to the computation module as thedestination location information, and the computation module can use thebusiness records to determine the destination location as the coordinatepair of the business that is the train station.

[0034] At least one of the source location information and thedestination location information can be a coordinate pair, a latitude, alongitude, a signal from a global positioning system, at least a portionof a street name, at least a portion of a landmark name, at least aportion of a building name, at least a portion of a company name, atleast a portion of a street address, at least a portion of a name of atransit station, and at least a portion of a name of a governmentfacility.

[0035] Referring again to FIG. 2, for example, if the user's currentlocation is the intersection 16 of 4th Street W and Avenue A, the usermay provide the name “4th Street W” and the name “Avenue A” to thecomputation module as street names, and the computation module can usethe street records and the node records to determine the source locationas the coordinate pair of the node that represents the intersection 16of 4th Street W and Avenue A. Further, for example, if the user desiresto go to a business located on 4th Street E, the user may provide thename of the business to the computation module as the destinationlocation information, and the computation module can use the businessrecords, the street records and the node records to determine thedestination location as the coordinate pair of the business on 4thStreet E.

[0036] Once the computation module identifies the source location fromthe source location information and the destination location from thedestination location information, the computation module is adapted todetermine a set of source streets associated with the source locationand a set of destination streets associated with the destinationlocation. If the source location is the coordinate pair of a node, everystreet incident to that node is included in the set of source streets.The streets incident to that node can be identified by the intersectingstreet identifiers in the node record for that node. For example, if thesource location is the coordinate pair of the node that represents theintersection 16 of 4th Street W and Avenue A, the intersecting streetidentifiers in the node record of that node will indicate that both 4thStreet W and Avenue A are streets incident to that node, and both willbe included in the set of source streets. If the destination location isthe coordinate pair of a business, the street on which the business islocated is included in the set of destination streets. For example, ifthe destination location is the coordinate pair of the business on 4thStreet E, 4th Street E is included in the set of destination streets.Similarly, if the destination location is the coordinate pair of abusiness located at an intersection, every street incident to the noderepresenting that intersection is included in the set of destinationstreets.

[0037] As stated above, the computation module is adapted to execute analgorithm for determining a route between the source location and thedestination location. In an embodiment, the route is a simplest route ofa plurality of possible routes between the source location and thedestination location. The term “simplest” as used herein is defined as aminimum number of street changes. A breadth-first search algorithm canbe used to determine the simplest route. In another embodiment, theroute is a minimum cost route of a plurality of possible routes betweenthe source location and the destination location. The minimum cost routepresents at least one of a minimum amount of tolls, a minimum amount oftransportation fees, a minimum amount of expected danger, a minimumamount of expected traffic congestion, and a minimum travel time. Analgorithm in which the streets can be weighted to account for suchcosts, such as Dijkstra's algorithm or the Bellman-Ford algorithm, canbe used to determine such a minimum cost route.

[0038] While the algorithm can be adapted to manipulate any graphrepresentation of the mapped objects, the algorithm is preferablyadapted to manipulate a graph representation having vertices and edges,wherein each of the vertices corresponds to a respective one of thestreets, each of the streets corresponds to exactly one of the vertices,each node corresponds to at least one of the edges, and each edgecorresponds to exactly one node. FIG. 3 illustrates an exemplary graphrepresentation G=(V, E). Each vertex v in V corresponds to a street inthe street database, and an edge (u, v) appears in E if and only ifstreets u and v intersect at some node in the node database. The graphrepresentation G may be weighted (e.g., when using the algorithm todetermine the minimum cost route mentioned above), in which case eachedge e has an associated cost c(e). FIG. 3 shows exemplary verticescorresponding to 4th Street W at 30 a, Avenue A at 30 b, 1st Street at30 c, 2nd Street at 30 d, 3rd Street at 30 e, Diagonal Street at 30 f,Avenue B at 30 g and 4th Street E at 30 h. FIG. 3 also shows exemplaryedges corresponding to the intersections of 4th Street W and Avenue A at32 a, Avenue A and 1st Street at 32 b, Avenue A and 2nd Street at 32 c,Avenue A and 3rd Street at 32 d, Avenue A and Diagonal Street at 32 e,Avenue B and Diagonal Street at 32 f, Avenue B and 1st Street at 32 g,Avenue B and 2nd Street at 32 h, Avenue B and 3rd Street at 32 i, andAvenue B and 4th Street E at 32 j.

[0039] When the algorithm is adapted to manipulate the preferred graphrepresentation, and the computation module is adapted to determine asimplest route of a plurality of possible routes between the sourcedestination and the source location, the algorithm can include anyshortest-path algorithm known in the art that can manipulate thepreferred graph representation to determine a simplest path between somemember of the set of source streets and some member of the set ofdestination streets. For example, such a shortest-path algorithmdetermines a minimum cost sequence of streets between some member of theset of source streets and some member of the set of destination streets,and when the graph representation is unweighted, minimum cost means aminimum distance along the sequence of streets, so that the resultingpath presents the fewest number of street changes to the traveler. Anexemplary shortest-path algorithm that can be used to manipulate anunweighted graph representation is a breadth-first search algorithm.

[0040] When the algorithm is adapted to manipulate the preferred graphrepresentation, and the computation module is adapted to determine aminimum cost route of a plurality of possible routes between the sourcedestination and the source location, the algorithm can include anyshortest-path algorithm known in the art that can manipulate thepreferred graph representation to determine a minimum cost path betweensome member of the set of source streets and some member of the set ofdestination streets. For example, such a shortest-path algorithmdetermines a minimum cost sequence of streets between some member of theset of source streets and some member of the set of destination streets,and when the graph representation is weighted, minimum cost means aminimum sum of the costs associated with each edge along the sequence ofstreets, so that the resulting path presents the minimum cost to thetraveler. Exemplary shortest-path algorithms that can be used tomanipulate a weighted graph representation are Dijkstra's algorithm orthe Bellman-Ford algorithm.

[0041] In certain embodiments, the computation module is further adaptedto exclude a subset of the edges in E from consideration by thealgorithm, thereby making the determination of the route more efficient.The computation module can be adapted to determine asource-to-destination vector having a source end at the source locationand a destination end at the destination location. The computationmodule can be further adapted to determine a source corridor vectorperpendicular to the source-to-destination vector and to determine adestination corridor vector perpendicular to the source-to-destinationvector, such that the source corridor vector and the destinationcorridor vector define a corridor area therebetween that contains thesource location and the destination location. For example, the corridorarea would be the set of all <x, y> coordinate pairs that are enclosedby the parallel source corridor and destination corridor vectors thatenclose the source location and the destination location. All of thenodes outside this corridor area are then excluded from consideration bythe algorithm. None of the node records used by the algorithm identifiesa node outside the corridor area. For example, every edge e in Ecorresponding to a node having an <x, y> coordinate pair that is not inthe corridor area is removed from E prior to the execution of thealgorithm. Therefore, the algorithm does not explore a possible routewhen a portion of the possible route falls outside the corridor area.

[0042] The source corridor vector may pass through the source locationand/or the destination corridor vector may pass through the destinationlocation. However, in some cases this results in desired routes beingundetermined by the computation module. For example, if a noderepresenting an exit ramp of a major highway is very close to thedestination location but is outside the corridor area, a desired routethat uses that major highway to reach the destination location may beundetermined. In such a case and other cases, it may be preferable tobroaden the corridor area by moving the source corridor vector such thatit no longer passes through the source location and/or moving thedestination corridor vector such that it no longer passes through thedestination location.

[0043] The route between the source location and the destinationlocation, as determined by the computation module, includes the desiredsolution path between a source street in the set of source streets and adestination street in the set of destination streets, as determined bythe algorithm. The computation module can be adapted to commence thedetermination of the route from the source location to the destinationlocation, and/or from the destination location to the source location,because the algorithm can be adapted to commence the determination of adesired solution path from any source street in the set of sourcestreets to any destination street in the set of destination streets,and/or any destination street in the set of destination streets to anysource street in the set of source streets. The algorithm is preferablyadapted to commence the search for the desired solution path from anydestination street in the set of destination streets and terminate whenany source street in the set of source streets is reached. During thesearch, the algorithm preferably keeps track of the predecessor streetof each street along the developing solution path, such that when anysource street in the set of source streets is reached, the desiredsolution path can be determined by recalling the predecessor of thesource street, then that street's predecessor, and so on to thedestination street (that has no predecessor). The resulting route isthen conveniently represented from the source location to thedestination location.

[0044] In the preferred embodiment, the algorithm manipulates a graphrepresentation having a plurality of vertices and a plurality of edges,with each edge representing an adjacency between two of the vertices asdescribed above. The algorithm designates a source vertex from among thevertices that represents a beginning street that is one of a sourcestreet in the set of source streets and a destination street in the setof destination streets. The algorithm also designates a destinationvertex from among the vertices that represents an ending street that isthe other of the source street and the destination street. The algorithmthen designates the source vertex as “seen”, designates each remainingvertex as “unseen”, and places the source vertex in a head position of afirst-in-first-out queue. The algorithm thereafter executes a loop whilethe destination vertex is designated as “unseen” and the queue is notempty. In the loop, when all vertices adjacent to the head-positionedvertex are “seen”, the algorithm removes the head-positioned vertex fromthe queue, and, when a next vertex is next in the queue, places thatnext vertex in the head position. Alternatively in the loop, when atleast one vertex adjacent to the head-positioned vertex is designated as“unseen”, the algorithm considers in a consideration order each unseenvertex adjacent to the head-positioned vertex, and, after all of theunseen vertices adjacent to the head-positioned vertex have beenconsidered, removes the head-positioned vertex from the queue and, whena next vertex is next in the queue, places that next vertex in the headposition. Each of the vertices cannot be simultaneously designated asboth “seen” and “unseen”.

[0045] Known shortest-path algorithms do not specify the order in whichthe vertices adjacent to the head-positioned vertex are considered. Asstated above, a vertex is adjacent to the head-positioned vertex whenthe vertex represents a street that intersects the street represented bythe head-positioned vertex. The algorithm of the invention can beadapted to consider the adjacent vertices in a consideration order suchthat when multiple shortest paths exist in G, the algorithm has atendency to discover that shortest path which traverses the minimumphysical distance. In this context, the shortest path will be referredto as the “simplest path” (e.g., the path with the minimum number ofstreet changes), and a reference to the “physically shortest path” willmean a path traversing a minimum physical distance. Therefore, when atleast two of a plurality of possible routes between the source locationand the destination location are the simplest routes (i.e., both requirean identical minimum number of street changes), the algorithm preferablyis biased toward determining the physically shortest route (i.e., theroute traversing the minimum physical distance) of the at least twopossible routes. This biasing can be accomplished by ordering in theconsideration order as described in greater detail below.

[0046] The consideration order can be established by each unseen vertexadjacent to the head-positioned vertex having associated therewith aposition in a connection order relative to the head-positioned vertex.In the ongoing example, each of the unseen 1st Street, Diagonal Street,2nd Street and 3rd Street vertices has a position in a connection orderrelative to the Avenue B vertex. By way of explanation, recalling againFIG. 2 and its related discussion, a position in a connection order isestablished for each of the nodes incident to each street in thedatabase. As stated above, the position in the connection order of thenodes identified by the incident node identifiers with respect to thestreet to which the nodes are incident is determined by beginning at oneend of the street and upon encountering each node, assigning aconnection order position to the encountered node, until all nodes onthe street have been encountered and have been assigned a connectionorder position. In the ongoing example, Avenue B has five nodes 32 f, 32g, 32 h, 32 i, 32 j that can be positioned in a connection order, andthat would be positioned in the connection order as fourth (or assigneda position #4), fifth (or assigned a position #5), third (or assigned aposition #3), second (or assigned a position #2) and first (or assigneda position #1), respectively (when starting at the north end of thestreet and preferring Diagonal Street over 1st Street). Therefore, inthe ongoing example, in the graph representation, the Avenue B vertexhas five edges 32 f, 32 g, 32 h, 32 i, 32 j that represent adjacenciesof the Avenue B vertex and the five vertices 30 f, 30 c, 30 d, 30 e, 30h, respectively, such that each of the five vertices 30 f, 30 c, 30 d,30 e, 30 h can be associated with a position in the connection order.Such positions in the connection order would be fourth (or assigned aposition #4), fifth (or assigned a position #5), third (or assigned aposition #3), second (or assigned a position #2) and first (or assigneda position #1), respectively (when starting at the north end of thestreet and preferring Diagonal Street over 1st Street).

[0047] The consideration order is further established by pairing a firstunconsidered vertex and, when available, a second unconsidered vertex.The first unconsidered vertex is an unconsidered vertex next in one ofincreasing connection order position and decreasing connection orderposition from an entrance connection order position. The secondunconsidered vertex is an unconsidered vertex next in the other ofincreasing connection order position and decreasing connection orderposition from the entrance connection order position. If the secondunconsidered vertex is not available, it is not paired. That is, incertain aspects of the invention, as will be discussed below withreference to enqueueing the paired vertices for consideration, a paircannot be made because either no unconsidered vertices remain in one ofincreasing connection order position and decreasing connection orderposition from the entrance order position, and thus a secondunconsidered vertex is not available for pairing.

[0048] When the head-positioned vertex is the source vertex, theentrance connection order position is a connection order position,relative to the head-positioned vertex, of a vertex adjacent to thehead-positioned vertex. This aspect accounts for the source vertexhaving no predecessor because the source vertex is the initial vertex inthe head-position of the FIFO queue. The vertex adjacent to thehead-positioned vertex that is chosen for the connection order positioncan be chosen arbitrarily. Preferably, it is chosen because theintersection represented by the edge representing the adjacency betweenthat vertex and the head-positioned vertex is closest in physicalproximity to the destination location when compared with theproximities, to the destination location, of other intersections (ifany) represented respectively by edges representing respectiveadjacencies between other vertices and the head-positioned vertex.

[0049] When the head-positioned vertex is not the source vertex, theentrance connection order position is the connection order position,relative to the head-positioned vertex, of the predecessor vertex of thehead-positioned vertex. This aspect accounts for the other vertices thatare subsequently placed in the head position of the FIFO queue, becausethese vertices have predecessors that have been assigned during thesearch as described above. In the ongoing example, as stated above, theentrance connection order position would be the connection order of the4th Street E vertex, because the 4th Street E vertex has been designatedas a predecessor of the Avenue B vertex.

[0050] The ongoing example best illustrates the case when nounconsidered vertices are in decreasing connection order position fromthe entrance connection order position, and thus a second unconsideredvertex is not available for pairing. More specifically, in the ongoingexample, no pairing would occur for the vertices adjacent to the AvenueB vertex because only unconsidered vertices in increasing connectionorder position from the entrance connection order position (i.e., first)are available. Therefore, the vertices adjacent to the Avenue B vertexwould be considered in increasing connection order position from theentrance connection order position without being paired.

[0051] An alternate example best illustrates a case where the algorithmarrives at the Avenue B vertex 30 g using the edge 32 h. In such anexample, the 2nd Street vertex 30 d would then be designated as seen anddesignated as a predecessor of the Avenue B vertex 30 g. Recall that the4th Street E vertex 30 h, the 3rd Street vertex 30 e, the 2nd Streetvertex 30 d, the Diagonal Street vertex 30 f, and the 1st Street vertex30 c are first, second, third, fourth, and fifth, respectively, inconnection order relative to the Avenue B vertex 30 g (when DiagonalStreet is preferred over 1st Street). Therefore, the entrance connectionorder position is third (because the 2nd Street vertex 30 d is third inconnection order relative to the Avenue B vertex 30 g). Thus, in a firstiteration, the unconsidered vertex next in decreasing connection orderposition from the entrance connection order position (in this example,third) would be the 3rd Street vertex 30 e, because the 3rd Streetvertex is second in connection order relative to the Avenue B vertex 30g, and the unconsidered vertex next in increasing connection orderposition from the entrance connection order position (in this example,third) would be the Diagonal Street vertex 30 f, because the DiagonalStreet vertex 30 f is fourth in connection order relative to the AvenueB vertex 30 g.

[0052] The consideration order is further established by orderingaccording to a preference order the paired first unconsidered vertex andsecond unconsidered vertex. If no pair can be created, such as in theongoing example, the preference order may not be established, and theunconsidered vertices are considered in increasing (or decreasing)connection order position from the entrance connection order position.

[0053] The consideration order is further established by enqueueing forconsideration (according to the preference order) at least one of thefirst unconsidered vertex and the second unconsidered vertex. This meansthat one or both of the first unconsidered vertex and the secondunconsidered vertex are enqueued in the preference order forconsideration. In a certain aspect, only the first in preference orderwill be enqueued, and the second in preference order will become amember of the next pair of vertices that is created as described above.In the alternate example, using this aspect, where the 3rd Street vertexand the Diagonal Street vertex would be paired, and the 3rd Streetvertex is first in preference order, the 3rd Street vertex will beenqueued for consideration and the Diagonal Street vertex will become amember of the next pair that is created as described above. In anotheraspect, both the first unconsidered vertex and the second unconsideredvertex are enqueued in the preference order for consideration. In thealternate example, using this aspect, where the 3rd Street vertex andthe Diagonal Street vertex would be paired, and the 3rd Street vertex isfirst in preference order, the 3rd Street vertex will be enqueued forconsideration first and the Diagonal Street vertex will be enqueued forconsideration second.

[0054] The preference order in one aspect sorts the paired verticesaccording to their physical distance from the entrance intersection. Thepreference order in this aspect can be established by thehead-positioned vertex having associated therewith an entranceintersection that is the intersection represented by the edge used bythe algorithm to find the head-positioned vertex. In the ongoingexample, the entrance intersection is the intersection of 4th Street Eand Avenue B. The preference order in this aspect can be furtherestablished by each of the first unconsidered vertex and, whenavailable, the second unconsidered vertex having associated therewith(1) a respective vertex intersection and (2) a respective straight linedistance from the respective vertex intersection to the entranceintersection. Each of the respective vertex intersections is anintersection of (a) a street represented by the respective unconsideredvertex adjacent to the head-positioned vertex and (b) the streetrepresented by the head-positioned vertex. In the alternate example,using this aspect, the first unconsidered vertex is the 3rd Streetvertex that has (1) an associated respective vertex intersection in theintersection of 3rd Street and Avenue B and (b) an associated respectivestraight line distance from the intersection of 3rd Street and Avenue Bto the intersection of 4th Street E and Avenue B. Similarly, in thealternate example, using this aspect, the second unconsidered vertex isthe Diagonal Street vertex that has (1) an associated respective vertexintersection in the intersection of Diagonal Street and Avenue B and (b)an associated respective straight line distance from the intersection ofDiagonal Street and Avenue B to the intersection of 4th Street E andAvenue B. The preference order in this aspect would then be according tothe shorter of the straight line distances or arbitrary when thestraight line distances are identical.

[0055] The preference order in another aspect sorts the paired verticesaccording to their physical distance from the destination location. Thepreference order in this aspect can be established by each of the firstunconsidered vertex and, when available, the second unconsidered vertexhaving associated therewith (1) a respective vertex intersection and (2)a respective straight line distance from the respective vertexintersection to one of (a) the source location, when the ending streetis the source street, and (b) the destination location, when the endingstreet is the destination street. Each of the respective vertexintersections is an intersection of (a) a street represented by therespective unconsidered vertex adjacent to the head-positioned vertexand (b) the street represented by the head-positioned vertex. In thealternate example, using this aspect, the first unconsidered vertex isthe 3rd Street vertex that has an associated respective vertexintersection in the intersection of 3rd Street and Avenue B. Similarly,in the ongoing example, using this aspect, the second unconsideredvertex is the Diagonal Street vertex that has an associated respectivevertex intersection in the intersection of Diagonal Street and Avenue B.In the alternate example, using this aspect, because the ending streetis the source street, the 3rd Street vertex has an associated respectivestraight line distance from the intersection of 3rd Street and Avenue Bto the user's location, and the Diagonal Street vertex has an associatedrespective straight line distance from the intersection of DiagonalStreet and Avenue B to the user's location. This preference order inthis aspect is according to the shorter of said straight line distancesor arbitrary when said straight line distances are identical.

[0056] Eventually, the destination vertex is designated as seen,indicating that the destination vertex has been found and a desiredsolution path can be determined by recalling the predecessors of thevertices used to arrive at the destination vertex. In the alternateexample, the 3rd Street vertex (a member of the 3rd Street vertex and2nd Street vertex pair) would be preferred over the Diagonal Streetvertex in the pair, either because, as can be seen on FIG. 4, theintersection of 3rd Street and Avenue B is closer to the intersection of4th Street E and Avenue B than is the intersection of Diagonal Streetand Avenue B, or because, as can be seen on FIG. 4, the intersection of3rd Street and Avenue B is closer to the user's location at theintersection of 4th Street W and Avenue A than is the intersection ofDiagonal Street and Avenue B. Further, in the alternate example, asshown on FIG. 5, the 3rd Street vertex has two adjacent vertices (theAvenue A vertex and the Avenue B vertex). Further, in the ongoingexample, when the 3rd Street vertex is placed in the head-position ofthe FIFO queue, the Avenue B vertex will have been designated as seen,and as a predecessor of the 3rd Street vertex, and therefore the AvenueA vertex will be the only unconsidered vertex adjacent to the 3rd Streetvertex. The algorithm will consider the Avenue A vertex, note thatAvenue A is a member of the set of source streets, designate the AvenueA vertex as seen, and end the loop. The algorithm then determines thedesired solution path by recalling that the 3rd Street vertex is thepredecessor of the Avenue A vertex, that the Avenue B vertex is thepredecessor of the 3rd Street vertex and that the 4th Street E vertex inthe ongoing example (2nd Street vertex in the alternate example) is thepredecessor of the Avenue B vertex. The computation module thendetermines the route as including the desired solution path.

[0057] As stated above, the consideration order, and the integralconnection order and preference order, are established to bias thealgorithm to determine the physically shortest path when multiplesimplest paths exist. In the ongoing example, once the algorithm hasarrived at the Avenue B vertex from the 4th Street E vertex, it canexplore the 3rd Street, 2nd Street, Diagonal Street and 1st Streetvertices. When using any of the desired preference ordering andenqueueing options discussed above, the algorithm would explore thevertices in that order, and would therefore ensure that 3rd Street isultimately chosen as a step to Avenue A (a member of the set of sourcestreets). It should be noted that for other maps, and other searches onthe exemplary map, when using one preference ordering and/or enqueueingoption versus another, the algorithm may not order vertices in the sameorder. Nevertheless, without the biasing ordering of the invention, analgorithm not so biased finds a path in G that is as simple as the pathfound by the invention, but that is physically longer than the pathfound by the invention (i.e., traverses additional physical distance).For example, an algorithm not so biased might choose 1st Street as astep to Avenue A, and therefore find a path in G that is as simple(i.e., has the same number of street changes) as the path depicted onthe map in FIG. 4 and on the graph representation in FIG. 5, but that isphysically longer (i.e., traverses additional physical distance).

[0058] In other embodiments, the computation module may not choose thesimplest route initially discovered. In one aspect, the computationmodule finds a simplest route as a current candidate route anddetermines its “overhead ratio”. The overhead ratio is defined as theratio of the distance, along the current candidate route, between thesource location and the destination location to the distance, along astraight line route, between the source location and the destinationlocation. If the current candidate route's overhead ratio is below adesired ratio (a 1:1 ratio or any ratio above 1:1, but preferablybetween 1:1 and 3:1 and more preferably approximately {square root}2:1),the current candidate route is designated as the desired route. If thecurrent candidate route's overhead ratio is not below the desired ratio,the search continues. Inasmuch as the desired route includes a desiredsolution path, the candidate route may include a candidate solution pathbetween the beginning street and the ending street. Therefore, in thealgorithm, the consideration of each unseen vertex adjacent to thehead-positioned vertex may include checking each candidate solution pathto determine if the overhead ratio is below a desired ratio.

[0059] Accordingly, during each consideration, the algorithm in such anaspect, when the vertex under consideration is the destination vertex,would first designate the head-positioned vertex as a predecessor ofsaid destination vertex and then determine a ratio of a distance along acandidate route between the source location and the destination locationto a distance along a straight line route between said source locationand said destination location. The candidate route for the iterationwould include a current candidate solution path between the beginningstreet and the ending street. If the ratio is lower than a desiredratio, the algorithm would designate the current candidate solution pathas the desired solution path, and would designate the destination vertexas seen. This designation of the destination vertex as seen would endthe consideration loop, and the computation module would determine thedesired route as including that desired solution path. When the vertexunder consideration is not the destination vertex, the algorithm woulddesignate the vertex under consideration as seen after the vertex underconsideration has been considered, designate the head-positioned vertexas a predecessor of the vertex under consideration, and place the vertexunder consideration in a tail position of the FIFO queue after thehead-positioned vertex has been designated as the predecessor. The loopcontinues until a desired solution path is found. If no candidatesolution path, has an overhead ratio below the desired ratio, thephysically shortest candidate solution path can be used.

[0060] In another aspect of such embodiments, the same procedure can befollowed, but in addition, if the overhead ratio of the currentcandidate route is not below the desired ratio, the current candidateroute is stored as a previous candidate route. As the search continues,any time a new route is discovered that has the same number of or more(preferably a minimum of 1 and a maximum of 2) street changes than thestored (i.e., previous) candidate route (and thus becomes a currentcandidate route), it either has an overhead ratio below the desiredratio and is immediately chosen, or does not. If it does not, and if thecurrent candidate route has the same number of street changes as theprevious candidate route, then the current candidate route is stored totake the place of the previous candidate route (to become the “previouscandidate route” for the next iteration) if and only if the new route isphysically shorter (distance along the new route) than the candidateroute (distance along the candidate route). Alternatively, if thecurrent candidate route has more (preferably a minimum of 1 and amaximum of 2) street changes than the previous candidate route, thencurrent candidate new route is stored as the previous candidate route ifand only if the current candidate route is physically shorter (distancealong the current candidate route) than the previous candidate route(distance along the previous candidate route) by a desired ratio (anyratio less than 1:1, preferably less than 1:1 but greater than 0.5:1 andmore preferably 0.7:1). If the current candidate route has more than themaximum number of street changes than the previous candidate route, then(due to the properties of the search algorithm discussed above asfinding the simplest paths first before finding the more complicatedpaths), all subsequent routes will also have more than the maximumnumber of street changes than the previous candidate route. Thecomputation module would then discard the current candidate route andchoose the previous candidate route as the desired route.

[0061] Inasmuch as the desired route includes a desired solution path,the candidate route may include a candidate solution path between thebeginning street and the ending street. Similarly, the current candidateroute may include a current candidate solution path between thebeginning street and the ending street, the previous candidate route mayinclude a previous candidate solution path between the beginning streetand the ending street.

[0062] Accordingly, during each consideration, the algorithm in such anaspect, when the vertex under consideration is the destination vertexand a previous candidate solution path between the beginning street andthe ending street has not been designated, designates thehead-positioned vertex as a predecessor of the destination vertex,designates the current candidate solution path as the previous candidatesolution path, and terminates consideration of the vertex underconsideration.

[0063] Alternately, during each consideration, the algorithm in such anaspect, when the vertex under consideration is the destination vertexand the previous candidate solution path has been designated, compares adistance along the current candidate solution path with a distance alongthe previous candidate solution path.

[0064] If the distance along the current candidate solution path isphysically shorter than the distance along the previous candidatesolution path (if not, the algorithm terminates consideration of thevertex under consideration), the algorithm compares a number of verticesin the current candidate solution path with a number of vertices in theprevious candidate solution path. The algorithm then preferably performsone of three steps, and otherwise terminates consideration of the vertexunder consideration. First, if the number of vertices in the currentcandidate solution path equals the number of vertices in the previouscandidate solution path, the algorithm designates the head-positionedvertex as a predecessor of the destination vertex, designates thecurrent candidate solution path as the previous candidate solution path,and terminates consideration of the vertex under consideration.

[0065] Second, if the number of vertices in the current candidatesolution path is a minimum number (preferably 1) of vertices greaterthan the number of vertices in the previous candidate solution path, thealgorithm determines a ratio of the distance along the current candidatesolution path to the distance along the previous candidate solutionpath. If the ratio is lower than a desired ratio (e.g., any ratio lessthan 1:1, preferably less than 1:1 but greater than 0.5:1 and morepreferably 0.7:1) (if not the algorithm terminates consideration of thevertex under consideration), the algorithm designates thehead-positioned vertex as a predecessor of the destination vertex,designates the current candidate solution path as the previous candidatesolution path, and terminates consideration of the vertex underconsideration.

[0066] Third, if the number of vertices in the current candidatesolution path is a maximum number of vertices greater than the number ofvertices in the previous candidate solution path, the algorithmdesignates the previous candidate solution path as the desired solutionpath, designates the destination vertex as seen and terminatesconsideration of the vertex under consideration.

[0067] Alternately, during each consideration, the algorithm in such anaspect, when the vertex under consideration is not the destinationvertex, designates the vertex under consideration as seen after thevertex under consideration has been considered, designates thehead-positioned vertex as a predecessor of the vertex underconsideration, places the vertex under consideration in a tail positionof the FIFO queue after the head-positioned vertex has been designatedas the predecessor, and terminates consideration of the vertex underconsideration.

[0068] Once the computation module determines the route as the desiredroute, the desired route is preferably presented to the user. In oneembodiment, the system of the invention further includes a presentationmodule adapted to generate and present navigational instructions fortraversing the route. Preferably, the presentation module interprets theroute as determined by the computation module into natural languagenavigational instructions. The presentation module may also oralternatively generate and present a map showing at least a portion ofthe route.

[0069] The instructions may include at least one of an instruction toread at least one of the mapped objects, an instruction to turn at oneof the mapped objects, an instruction to pass by one of the mappedobjects, and a description of one of the mapped objects. The mappedobjects can be at least one of a business, a street, an intersection, asign, a billboard, an advertisement, a map, a schedule, a landmark, abuilding, a transit station, and a government facility.

[0070] In some cases, the mapped object can be associated with a vendorthat has arranged for the instructions to be presented. For example, avendor may pay to have his or her business included in the set ofinstructions for advertising purposes.

[0071] The instructions may include at least one of instructions to movein a direction, instructions to turn in a direction, instructions tomove a distance, instructions to move for a period of time, and/orinstructions to continue to move in a particular direction on adifferent street. The instructions may include at least one ofinstructions to pay a toll, instructions to use at least one componentof a mass transit system (e.g., a subway system), instructions to read anavigational reference (e.g., a map or sign), instructions to turn at anavigational reference (e.g., turn at a sign), and instructions to passby a navigational reference (e.g., pass a sign for an exit off ahighway). The instructions may include a description of the sourcelocation, the destination location and the navigational reference.Exemplary navigational references include one of the businesses, one ofthe streets, one of the nodes, a sign, a billboard, an advertisement, amap, a schedule, a landmark, a building, a transit station, and agovernment facility. The instructions may also include helpfulredundancies as error checks, such as reminding the user of the streetor streets at the source location and pointing out the names of otherstreets on some of the nodes traversed.

[0072] In some embodiments, the presentation module is adapted togenerate and present the instructions using at least one of demographicinformation pertaining to the user, a preference of the user, acharacteristic of the user, a characteristic of a handheld device beingused by the user, information stored in the handheld device, and acharacteristic of one of the businesses, one of the streets, and/or oneof the nodes. For example, the user may provide demographic informationand/or preferences that are used by the presentation module to presentthe instructions according to those preferences and/or tailored to thedemographic information. Or, for example, a characteristic of the usermay be determined by recording and analyzing the interaction between theuser and the handheld device, and this information may be used to tailorthe instructions to the user or present the instructions along withrelevant advertisements. Or, for example, a characteristic of thehandheld device may be determined automatically, and used to present thenavigational instructions along with advertisement graphics instead ofadvertisement text. Such tailoring information can be stored on thehandheld device or elsewhere in a manner accessible by the system forthese purposes. Finally, characteristics of the businesses,characteristics of the streets, and characteristics of the nodes thatthe user is going to encounter along the route, and/or characteristicsof other businesses, streets and/or nodes, may be used to tailor thenavigational instructions to be presented along with advertisements,suggestions, and recommendations

[0073] In the ongoing example, a desired route 34 is shown in FIG. 4.The instructions that would be presented could be rendered as: “From 4thStreet W and Avenue A, go South on Avenue A for about ½ mile. Turn leftonto 3rd Street and go another ½ mile. Turn left again onto Avenue B andgo ¼ mile. Turn right onto 4th Street E and your destination is within25 yards.”

[0074] The computation module can be further adapted to interact withthe user while executing the algorithm. In order for the computationmodule to exhibit such interactive responsiveness while it determinesthe route, the computation module can be adapted to provide statusinformation to the user between two of the iterations sequentiallyexecuted by the algorithm. The two iterations may be successive or otheriterations may be executed between the two iterations. Additionally oralternatively, the computation module can be adapted to check for a userrequest between two of the iterations. Again, the two iterations may besuccessive or other iterations may be executed between the twoiterations. If the user request is to terminate the determination of theroute, the computation module is preferably adapted to terminate thealgorithm in response to that request. The computation module can beadapted to temporarily suspend the algorithm, respond to the userrequest, and subsequently resume the algorithm.

[0075] In certain aspects, the computation module can temporarilysuspend the algorithm to execute an interface routine that checks foruser requests to process. For example, the user may request that thedetermination of the route and/or the presentation of instructions becancelled, in which case the algorithm and/or the presentation modulefunctions are terminated and abandoned entirely. Or, for example, whilethe algorithm is suspended, the computation module may provide statusupdates to the user to indicate that the route determination is runningcorrectly

[0076] Those skilled in the art will recognize that the system andmethod of the invention have many applications, and that the inventionis not limited to the representative embodiments disclosed herein. Thescope of the invention is only limited by that of the claims appendedhereto.

What is claimed is:
 1. A system for determining a route, comprising acomputation module adapted to: a) receive source location informationand use said source location information to identify a source location;b) receive destination location information and use said destinationlocation information to identify a destination location; and c) executean algorithm for determining a route between said source location andsaid destination location; wherein: i) said algorithm manipulates agraph representation having vertices; ii) each of said verticescorresponds to a respective street; and iii) each of said streetscorresponds to exactly one of said vertices.
 2. The system of claim 1,wherein: a) said computation module is adapted to: i) determine a set ofsource streets using said source location information, and ii) determinea set of destination streets using said destination locationinformation; and b) said source location is associated with a sourcestreet included in said set of source streets and said destinationlocation is associated with a destination street included in said set ofdestination streets.
 3. A system for determining a route, comprising: a)a plurality of map records identifying a plurality of mapped objects;and b) a computation module adapted to: i) receive source locationinformation; ii) use at least one of said map records to determine a setof source streets using said source location information, said set ofsource streets being associated with a source location associated with afirst mapped object; iii) receive destination location information; iv)use at least one of said map records to determine a set of destinationstreets using said destination location information, said set ofdestination streets being associated with a destination locationassociated with a second mapped object; and v) determine a route betweensaid source location and said destination location using at least one ofsaid map records.
 4. A system for determining a route, comprising acomputation module adapted to: a) receive source location informationand use said source location information to identify a source locationand a source street associated with said source location; b) receivedestination location information and use said destination locationinformation to identify a destination location and a destination streetassociated with said destination location; and c) execute an algorithmfor determining a route between said source location and saiddestination location, said route comprising a desired solution path;wherein: i) when at least two of a plurality of possible routes betweensaid source location and said destination location require an identicalminimum number of street changes, said algorithm is biased towarddetermining said route as a shortest route of said at least two of saidroutes.
 5. The system of claim 4, wherein: a) said algorithm manipulatesa graph representation having a plurality of vertices and a plurality ofedges; b) each of said edges represents an adjacency between two of saidvertices; c) said algorithm initially: i) designates a source vertexfrom said vertices, said source vertex representing a beginning street,said beginning street being one of said source street and saiddestination street, ii) designates a destination vertex from saidvertices, said destination vertex representing an ending street, saidending street being the other of said source street and said destinationstreet, iii) designates said source vertex as seen, iv) designates eachremaining vertex as unseen, and v) places said source vertex in a headposition of a first-in-first-out queue; d) said algorithm thereafterexecutes a loop while said destination vertex is designated as unseenand said queue is not empty, in which said algorithm: i) when allvertices adjacent to said head-positioned vertex are seen: (1) removessaid head-positioned vertex from said queue, and (2) when a next vertexis next in said queue, places said next vertex in said head position;ii) when at least one vertex adjacent to said head-positioned vertex isdesignated as unseen: (1) considers in a consideration order each unseenvertex adjacent to said head-positioned vertex, and (2) after all ofsaid unseen vertices adjacent to said head-positioned vertex have beenconsidered: (a) removes said head-positioned vertex from said queue, and(b) when a next vertex is next in said queue, places said next vertex insaid head position; e) each of said vertices cannot be simultaneouslydesignated as both seen and unseen; and f) said consideration orderbiases said algorithm toward determining said shortest route.
 6. Thesystem of claim 5, wherein said consideration of each unseen vertexadjacent to said head-positioned vertex comprises in the alternate andthereafter terminates: a) when said vertex under consideration is saiddestination vertex: i) designating said head-positioned vertex as apredecessor of said destination vertex, ii) determining a ratio of adistance along a candidate route between said source location and saiddestination location, said candidate route comprising a currentcandidate solution path between said beginning street and said endingstreet, to a distance along a straight line route between said sourcelocation and said destination location, and iii) when said ratio islower than a desired ratio: (1) designating said current candidatesolution path as said desired solution path, and (2) designating saiddestination vertex as seen; and b) when said vertex under considerationis not said destination vertex: i) designating said vertex underconsideration as seen after said vertex under consideration has beenconsidered, ii) designating said head-positioned vertex as a predecessorof said vertex under consideration, and iii) placing said vertex underconsideration in a tail position of said queue after saidhead-positioned vertex has been designated as said predecessor.
 7. Thesystem of claim 6, wherein said desired ratio is approximately {squareroot}2:1.
 8. The system of claim 5, wherein said consideration of eachunseen vertex adjacent to said head-positioned vertex comprises in thealternate and terminates otherwise: a) when said vertex underconsideration is said destination vertex and a previous candidatesolution path between said beginning street and said ending street hasnot been designated: i) designating said head-positioned vertex as apredecessor of said destination vertex, ii) designating a currentcandidate solution path between said beginning street and said endingstreet as said previous candidate solution path, and iii) terminatingconsideration of said vertex under consideration; b) when said vertexunder consideration is said destination vertex and said previouscandidate solution path has been designated, comparing a distance alonganother current candidate solution path between said beginning streetand said ending street with a distance along said previous candidatesolution path, and terminating consideration of said vertex underconsideration when not: i) when said distance along said other currentcandidate solution path is shorter than said distance along saidprevious candidate solution path, comparing a number of vertices in saidother current candidate solution path with a number of vertices in saidprevious candidate solution path, and performing in the alternate andotherwise terminating consideration of said vertex under consideration:(1) when said number of vertices in said other current candidatesolution path equals said number of vertices in said previous candidatesolution path: (a) designating said head-positioned vertex as apredecessor of said destination vertex, (b) designating said othercurrent candidate solution path as said previous candidate solutionpath, and (c) terminating consideration of said vertex underconsideration; (2) when said number of vertices in said other currentcandidate solution path is a minimum number of vertices greater thansaid number of vertices in said previous candidate solution path,determining a ratio of said distance along said other current candidatesolution path to said distance along said previous candidate solutionpath, and terminating consideration of said vertex under considerationwhen not: (a) when said ratio is lower than a desired ratio: (i)designating said head-positioned vertex as a predecessor of saiddestination vertex, (ii) designating said other current candidatesolution path as said previous candidate solution path, and(iii)terminating consideration of said vertex under consideration; and(3) when said number of vertices in said other current candidatesolution path is a maximum number of vertices greater than said numberof vertices in said previous candidate solution path, designating saidprevious candidate solution path as said desired solution path,designating said destination vertex as seen and terminatingconsideration of said vertex under consideration; and c) when saidvertex under consideration is not said destination vertex: i)designating said vertex under consideration as seen after said vertexunder consideration has been considered, ii) designating saidhead-positioned vertex as a predecessor of said vertex underconsideration, iii) placing said vertex under consideration in a tailposition of said queue after said head-positioned vertex has beendesignated as said predecessor, and iv) terminating consideration ofsaid vertex under consideration.
 9. The system of claim 8, wherein saidminimum number is 1, said maximum number is 2 and said desired ratio is0.7:1.
 10. The system of claim 5, wherein said consideration of eachunseen vertex adjacent to said head-positioned vertex comprises: a)designating said vertex under consideration as seen, b) designating saidhead-positioned vertex as a predecessor of said vertex underconsideration, c) placing said vertex under consideration in a tailposition of said queue after said head-positioned vertex has beendesignated as said predecessor, and d) terminating consideration of saidvertex under consideration.
 11. The system of claim 10, wherein saidconsideration order is established by: a) each unseen vertex adjacent tosaid head-positioned vertex having associated therewith a position in aconnection order relative to said head-positioned vertex; b) pairing afirst unconsidered vertex of said unseen vertices adjacent to saidhead-positioned vertex and, when available, a second unconsidered vertexof said unseen vertices adjacent to said head-positioned vertex, i) saidfirst unconsidered vertex being an unconsidered vertex next in one ofincreasing connection order position and decreasing connection orderposition from an entrance connection order position, ii) said secondunconsidered vertex being an unconsidered vertex next in the other ofincreasing connection order position and decreasing connection orderposition from the entrance connection order position, and iii) saidentrance connection order position being: (1) when said head-positionedvertex is said source vertex, a connection order position correspondingto a connection order position, relative to said head-positioned vertex,of a vertex adjacent to said head-positioned vertex; and (2) when saidhead-positioned vertex is not said source vertex, a connection orderposition, relative to said head-positioned vertex, of said predecessorvertex of said head-positioned vertex; c) ordering according to apreference order said first unconsidered vertex and, when available,said second unconsidered vertex; and d) enqueing for consideration,according to said preference order, at least one of said firstunconsidered vertex and said second unconsidered vertex.
 12. The systemof claim 11, wherein enqueing comprises enqueing for consideration,according to said preference order, both said first unconsidered vertexand said second unconsidered vertex.
 13. The system of claim 11, whereinsaid preference order is: a) established by: i) said head-positionedvertex having associated therewith an entrance intersection, saidentrance intersection being intersected by a street represented by saidhead-positioned vertex; ii) each of said first unconsidered vertex and,when available, said second unconsidered vertex having associatedtherewith: (1) a respective vertex intersection, each of said respectivevertex intersections being an intersection of: (a) a street representedby said respective unconsidered next vertex, and (b) said streetrepresented by said head-positioned vertex; and (2) a respectivestraight line distance from said respective vertex intersection to saidentrance intersection; and b) according to the shorter of said straightline distances.
 14. The system of claim 11, wherein said preferenceorder is: a) established by each of said first unconsidered vertex and,when available, said second unconsidered vertex having associatedtherewith: i) a respective vertex intersection, each of said respectivevertex intersections being an intersection of: (1) a street representedby said respective unconsidered next vertex, and (2) a streetrepresented by said head-positioned vertex; and ii) a respectivestraight line distance from said respective vertex intersection to oneof: (1) said source location, when said ending street is said sourcestreet, and (2) said destination location, when said ending street issaid destination street; and b) according to the shorter of saidstraight line distances.
 15. The system of claim 11, wherein saidconnection order positions are established by: a) a street representedby said head-positioned vertex having associated therewith a first endand a second end; b) each vertex adjacent to said head-positioned vertexhaving associated therewith: i) a respective vertex intersection, eachof said respective vertex intersections being an intersection of: (1) astreet represented by said respective vertex adjacent to saidhead-positioned vertex and (2) said street represented by saidhead-positioned vertex; and ii) a respective distance from saidrespective vertex intersection to one of said first end and said secondend along said street represented by said head-positioned vertex; and c)ordering said vertices adjacent to said head-positioned vertex accordingto increasing said respective distances.
 16. The system of claim 15,wherein ordering according to increasing said respective distancescomprises assigning a numerical value to each of said connection orderpositions to indicate a connection order position of each of saidvertices adjacent to said head-positioned vertex relative to oneanother.
 17. A system for determining a route, comprising a computationmodule adapted to: a) receive source location information and use saidsource location information to identify a source location; b) receivedestination location information and use said destination locationinformation to identify a destination location; c) determine asource-to-destination vector having a source end at said source locationand a destination end at said destination location; d) determine asource corridor vector perpendicular to said source-to-destinationvector and determine a destination corridor vector perpendicular to saidsource-to-destination vector, said source corridor vector and saiddestination corridor vector defining a corridor area therebetweencontaining said source location and said destination location; and e)execute an algorithm for determining a route between said sourcelocation and said destination location; wherein i) said algorithm doesnot explore a possible route when a portion of said possible route fallsoutside said corridor area.
 18. The system of claim 17, wherein saidsource corridor vector passes through said source location and saiddestination corridor vector passes through said destination location.19. A system for determining a route, comprising: a) a plurality of maprecords identifying a plurality of mapped objects; and b) a computationmodule adapted to i) receive source location information and use saidsource location information to identify a source location associatedwith a first mapped object; ii) receive destination location informationand use said destination location information to identify a destinationlocation associated with a second mapped object; iii) execute analgorithm for determining a route between said source location and saiddestination location using at least one of said map records; and iv)interact with a user of said computation module while executing saidalgorithm.
 20. The system of claim 19, wherein said algorithm executes asequence of iterations and said computation module provides statusinformation to said user between two of said iterations.
 21. The systemof claim 20, wherein said two iterations are successive.
 22. The systemof claim 19, wherein said algorithm executes a sequence of iterationsand said computation module checks for a user request between two ofsaid iterations.
 23. The system of claim 22, wherein said two iterationsare successive.
 24. The system of claim 22, wherein said computationmodule terminates said algorithm in response to said user request. 25.The system of claim 22, wherein said computation module temporarilysuspends said algorithm, responds to said user request, and subsequentlyresumes said algorithm.
 26. A system for determining a route,comprising: a) a plurality of map records identifying a plurality ofmapped objects; and b) a computation module adapted to i) receive sourcelocation information and use said source location information toidentify a source location associated with a first mapped object; ii)receive destination location information and use said destinationlocation information to identify a destination location associated witha second mapped object; and iii) determine a route between said sourcelocation and said destination location using at least one of said maprecords; and c) a presentation module adapted to generate and presentnavigational instructions for traversing said route; d) wherein saidinstructions comprise at least one of: i) an instruction to read atleast one of said mapped objects, ii) an instruction to turn at one ofsaid mapped objects, iii) an instruction to pass by said one of saidmapped objects, and iv) a description of said one of said mappedobjects; e) said one of said mapped objects being associated with avendor which has arranged for said presentation of said instructions.27. The system of claim 26, wherein said one of said mapped objects isat least one of a business, a street, an intersection, a sign, abillboard, an advertisement, a map, a schedule, a landmark, a building,a transit station, and a government facility.
 28. A system fordetermining a route, comprising: a) a plurality of business records eachidentifying a business, b) a plurality of street records eachidentifying a street, c) a plurality of node records each identifying anode; and d) a computation module adapted to i) receive source locationinformation and use said source location information to identify asource location associated with at least one of: (1) a businessidentified by at least one of said business records, (2) a streetidentified by at least one of said street records, and (3) a nodeidentified by at least one of said node records; ii) receive destinationlocation information and use said destination location information toidentify a destination location associated with at least one of: (1) abusiness identified by at least one of said business records, (2) astreet identified by at least one of said street records, and (3) a nodeidentified by at least one of said node records; and iii) determine aroute between said source location and said destination location usingat least one of: (1) at least one of said business records, (2) at leastone of said street records, and (3) at least one of said node records.29. The system of claim 28, wherein at least one of said source locationinformation and said destination location information comprises acoordinate pair, a latitude, a longitude, a signal from a globalpositioning system, at least a portion of a street name, at least aportion of a landmark name, at least a portion of a building name, atleast a portion of a company name, at least a portion of a streetaddress, at least a portion of a name of a transit station, and at leasta portion of a name of a government facility.
 30. The system of claim28, wherein said business records are maintained in at least onebusiness database, said street records are maintained in at least onestreet database, said node records are maintained in at least one nodedatabase, and said computation module is adapted to access said businessdatabase, said street database and said node database.
 31. The system ofclaim 28, wherein each of said business records comprises at least oneof a business unique identifier, a business street identifier, and abusiness coordinate pair.
 32. The system of claim 28, wherein each ofsaid street records comprises at least one of a street uniqueidentifier, a street name identifier, at least one incident nodeidentifier, and a one-wayness indicator.
 33. The system of claim 28,wherein each of said node records comprises at least one of a nodeunique identifier, at least one intersecting street identifier, a nodecoordinate pair, and at least one transition constraint governingtraversal of said node.
 34. The system of claim 28, wherein said routeis a simplest route of a plurality of possible routes between saidsource location and said destination location, said simplest routepresenting a minimum number of street changes.
 35. The system of claim34, wherein said computation module executes an algorithm fordetermining the route, said algorithm comprising a breadth-first searchalgorithm.
 36. The system of claim 28, wherein said route is a minimumcost route of a plurality of possible routes between said sourcelocation and said destination location.
 37. The system of claim 36,wherein said minimum cost route presents at least one of a minimumamount of tolls, a minimum amount of transportation fees, a minimumamount of expected danger, a minimum amount of expected trafficcongestion, and a minimum travel time.
 38. The system of claim 37,wherein said computation module executes an algorithm for determiningthe route, said algorithm comprising one of Dijkstra's algorithm and theBellman-Ford algorithm.
 39. The system of claim 28, wherein: a) saidcomputation module executes an algorithm for determining the route; b)said algorithm manipulates a graph representation having vertices andedges; c) each of said vertices corresponds to a respective one of saidstreets; d) each of said streets corresponds to exactly one of saidvertices; e) each node corresponds to at least one of said edges; and f)each edge corresponds to exactly one node.
 40. The system of claim 28,wherein: a) said computation module is adapted to: i) use at least oneof said business records, said street records and said node records todetermine a set of source streets using said source locationinformation, and ii) use at least one of said business records, saidstreet records and said node records to determine a set of destinationstreets using said destination location information; b) said sourcelocation is a source street included in said set of source streets andsaid destination location is a destination street included in said setof destination streets; and c) when said source location informationidentifies one of said nodes, said set of source streets includes allstreets identified by said intersecting street identifiers.
 41. Thesystem of claim 28, wherein: a) said computation module is furtheradapted to: i) determine a source-to-destination vector having a sourceend at said source location and a destination end at said destinationlocation; ii) determine a source corridor vector perpendicular to saidsource-to-destination vector; iii) determine a destination corridorvector perpendicular to said source-to-destination vector; iv) saidsource corridor vector and said destination corridor vector defining acorridor area therebetween containing said source location and saiddestination location; b) none of said node records used by thecomputation module to determine the route identifies a node outside saidcorridor area.
 42. The system of claim 41, wherein said source corridorvector passes through said source location and said destination corridorvector passes through said destination location.
 43. The system of claim28, further comprising a presentation module adapted to generate andpresent a map showing at least a portion of said route.
 44. The systemof claim 28, further comprising a presentation module adapted togenerate and present navigational instructions for traversing saidroute.
 45. The system of claim 44, wherein a) said instructions compriseat least one of: i) instructions to move in a direction; ii)instructions to turn in a direction; iii) instructions to move adistance; iv) instructions to move for a period of time; v) instructionsto pay a toll; vi) instructions to use at least one component of a masstransit system; vii) instructions to read a navigational reference,viii) instructions to turn at said navigational reference, ix)instructions to pass by said navigational reference, and x) adescription of at least one of said source location, said destinationlocation and said navigational reference; and b) said navigationalreference is at least one of: i) at least one of said businesses, ii) atleast one of said streets, iii) at least one of said nodes, iv) a sign,v) a billboard, vi) an advertisement, vii) a map, viii) a schedule, ix)a landmark, x) a building, xi) a transit station, and xii) a governmentfacility.
 46. The system of claim 44, wherein said presentation moduleis adapted to: a) present said instructions to a user of saidcomputation module; and b) generate and present said instructions usingat least one of: i) demographic information pertaining to said user, ii)a preference of said user, iii) a characteristic of said user, iv) acharacteristic of a handheld device being used by said user, v)information stored in said handheld device, and vi) a characteristic ofat least one of: (1) at least one of said businesses, (2) at least oneof said streets, and (3) at least one of said nodes.